package com.fantastic.sort;

import java.util.Arrays;

/**
 * @author : fantastic
 * @date : 2024/5/15 13:42
 * @desc : this class for xxxxx
 **/
public class InsertSort {

    public static void main(String[] args) {
        int[] arr = {20, 10, 11, 14, 9, 9, 10, 13};
        insertSort(arr);
        System.out.println(Arrays.toString(arr));
    }


    /**
     *  假设前面 n-1(其中 n>=2)个数已经是排好顺序的，现将第 n 个数插到前面已经排好的序列中，
     *   然后找到合适自己的位置，使得插入第n个数的这个序列也是排好顺序的。
     *   插入排序的平均时间复杂度也是 O(n^2)，空间复杂度为常数阶 O(1)，
     * @param arr
     */
    public static void insertSort(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            for (int j = i; j >0 ; j--) {
                if (arr[j]<arr[j-1]){
                    int temp=arr[j];
                    arr[j]=arr[j-1];
                    arr[j-1]=temp;
                }else {
                    break;
                }
            }
        }
    }
}
